/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
 */

package window;

import java.util.*;

/**
 * 模板
 * @author z00611952
 * @since 2021/9/19
 */
public class Demo {

    /**
     * 滑动窗口模板
     * @param s 源字符串
     * @param t 目标字符串
     * @return 返回
     */
    public static String window(String s, String t) {
        //1. 准备两个容器（Map）
        Map<Character, Integer> needs = new HashMap<>(), window = new HashMap<>();
        // 2. 将目标字符串的每一个字符进行统计
        for(int i = 0; i < t.length(); i++){
            needs.computeIfAbsent(t.charAt(i), key->needs.getOrDefault(key, 0) + 1);
        }
        int left = 0, right = 0;
        int valid = 0;
        while (right < s.length()){
            // c是将要移入窗口的字符
            char c = s.charAt(right);
            // 右移动
            right++;

            // 更新操作  更新窗口
            //...


            // debug
            System.out.println( "window: [" + left+ ", "+right+"]");

            // 判断左侧窗口是否要收缩
            boolean condition = true;
            while(condition){
                // d 是将移出窗口的字符
                char d = s.charAt(left);
                // 左移窗口
                left++;
                // 进行窗口内数据的一系列更新
            }
        }
        return null;
    }

    public static void main(String[] args) {
        window("999", "ahbgs");
    }

}
